#ifndef SHAPE_DLL_H
#define SHAPE_DLL_H

#include "shape_dll_global.h"


#include <QVector>
#include <QList>
class SHAPE_DLLSHARED_EXPORT Shape{
public:
    virtual ~Shape(){}
    virtual QString Print_type() = 0;
    virtual double perimetr() = 0;
    virtual double square() = 0;
    virtual QList<QString> getInf()=0;
    virtual void moveShape(double _x, double _y) = 0;
    virtual void shiftShape(double _angel) = 0;

};
class SHAPE_DLLSHARED_EXPORT Circle : public Shape{
private:
    double rad1;
    double rad2;
    double x;
    double y;
    double angel;
public:
    Circle(double _rad);
    Circle(double _x, double _y, double _rad, double _angel);
    QString Print_type();
    double perimetr();
    double square();
    QList<QString> getInf();
    void moveShape(double _x, double _y);
    void shiftShape(double _angel);

};

class SHAPE_DLLSHARED_EXPORT Triangle : public Shape{
private:
    double a;
    double b;
    double x;
    double y;
    double angel;
public:
    Triangle(double _a, double _b);
    Triangle(double _x, double _y, double _a, double _b, double _angel);
    QString Print_type();
    double perimetr();
    double square();
    QList<QString> getInf();
    void moveShape(double _x, double _y);
    void shiftShape(double _angel);
};

class SHAPE_DLLSHARED_EXPORT Rectangle : public Shape{
private:
    double a;
    double b;
    double x;
    double y;
    double angel;
public:
    Rectangle(double _a, double _b);
    Rectangle(double _x, double _y, double _a, double _b, double angel);
    QString Print_type();
    double perimetr();
    double square();
    QList<QString> getInf();
    void moveShape(double _x, double _y);
    void shiftShape(double _angel);
};



class SHAPE_DLLSHARED_EXPORT ShapeConteiner{
private:
    QVector <Shape*> mass;
public:
    ShapeConteiner();
    ~ShapeConteiner();
    int size();
    void InsertFig(Shape*fig);
    void RemoveFig(int i);
    Shape* operator[](int i);
    void Change(int index, double _x, double _y);
    void writeToFile(QString fileName);
    void  readFromFile(QString fileName);
};

#endif // SHAPE_DLL_H
